package ar.edu.itba.it.paw.services;

import java.util.ArrayList;
import java.util.List;


import ar.edu.itba.it.paw.domain.Category;
import ar.edu.itba.it.paw.domain.Product;
import ar.edu.itba.it.paw.domain.Transaction;
import ar.edu.itba.it.paw.domain.User;
import ar.edu.itba.it.paw.domain.exceptions.InsufficientProductsException;

public interface ProductServices {
	
	public ArrayList<Product> getAllProducts();
	
	public Product getProduct(int id);
	
	public List<Product> getUserProducts(User user);
	
	public List<Product> getOtherUserProducts(User user);
	
	public List<Product> getProductsByCategory(Category category);
	
	public void buy(Transaction transaction) throws InsufficientProductsException;
	
	public void addProduct(Product product, User owner);
	
	public void editProduct(Product product);
	
	public ArrayList<Category> getCategories();
	
	public Category getCategory(String name);
}
